Efficient BIER forwarding over varying BSL domain using header stitching

ABSTRACT

The present disclosure is directed to BIER forwarding over varying BSL domains, the methods including the steps of receiving, at a border node, a packet comprising a BIER header having a BIER bit string with a first bit string length; reading an incoming label of the packet comprising instructions to split the BIER header into a plurality of smaller headers associated with a plurality of smaller bit strings; generating a set of split bit masks; performing a separate bitwise AND operation on each split bit mask and the BIER bit string to generate the plurality of smaller bit strings, each copied to a corresponding smaller header of the plurality of smaller headers; and performing a lookup for each of the plurality of smaller headers on a respective forwarding table to determine one or more egress routers to which to transmit the packet.

TECHNICAL FIELD

The present disclosure generally relates to Bit Index ExplicitReplication (BIER), and more specifically to systems and methods forefficient BIER forwarding over varying bit string length (BSL) domainusing header stitching.

BACKGROUND

Bit Index Explicit Replication (BIER) is an architecture for forwardingmulticast data packets through a multicast domain. Unlike traditionalmulticast forwarding techniques, BIER does not require a protocol forexplicitly building multicast distribution trees or require intermediatenodes to maintain any per-flow state.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a system for forwarding BIER packets over varying BSLdomains using dynamic header stitching, in accordance with certainembodiments;

FIG. 2 illustrates sample BIER forwarding tables for use in a system forforwarding BIER packets over varying BSL domains, in accordance withcertain embodiments;

FIG. 3 illustrates a mechanism for generating split bit masks, inaccordance with certain embodiments;

FIG. 4 illustrates a flow diagram of a method for forwarding BIERpackets over varying BSL domains using dynamic header stitching, inaccordance with certain embodiments; and

FIG. 5 illustrates a computer system, in accordance with certainembodiments.

DESCRIPTION OF EXAMPLE EMBODIMENTS Overview

According to an embodiment, a system may include one or more processorsand one or more computer-readable non-transitory storage mediacomprising instructions that, when executed by the one or moreprocessors, cause one or more components of the system to performoperations including, receiving, at a border node, a packet from aningress router, the packet comprising a Bit Index Explicit Replication(BIER) header having a BIER bit string, the BIER bit stringcorresponding to a first bit string length; reading an incoming label ofthe packet, the incoming label associated with packet instructions tosplit the BIER header into a plurality of smaller headers associatedwith a plurality of smaller bit strings, each smaller bit string of theplurality of smaller bit strings corresponding to a second bit stringlength; generating a set of split bit masks; performing a separatebitwise AND operation on each split bit mask of the set of split bitmasks and the BIER bit string to generate the plurality of smaller bitstrings, each smaller bit string of the plurality of smaller bit stringscopied to a corresponding smaller header of the plurality of smallerheaders; and performing a lookup for each of the plurality of smallerheaders on a respective forwarding table to determine one or more egressrouters to which to transmit the packet.

Additionally, a length of each split bit mask of the set of split bitmasks may correspond to the first bit string length. Also, a number ofthe set of split bit masks may correspond to a quotient of the first bitstring length and the second bit string length.

Moreover, the operation of generating the set of split bit masks mayfurther include assigning each split bit mask of the set of split bitmasks a consecutive numerical index starting from zero.

Additionally, the operation of generating the set of split bit mayfurther comprise, for each split bit mask, setting a set of consecutivebits to one (1), the set of consecutive bits having a bit lengthcorresponding to the second bit string length; and setting all remainingbits to zero (0). Moreover, for a first split bit mask of the set ofsplit bit masks having a numerical index of zero, the set of consecutivebits may start at a first bit position of the first split bit mask.Further, for each successive split bit mask of the set of split bitmasks having a next consecutive numerical index, the set of consecutivebits may start at a next bit position, the next bit positioncorresponding to a next bit after a highest bit set to one (1) in thepreceding split bit mask.

According to another embodiment, a method may include the steps ofreceiving, at a border node, a packet from an ingress router, the packetcomprising a Bit Index Explicit Replication (BIER) header having a BIERbit string, the BIER bit string corresponding to a first bit stringlength; reading an incoming label of the packet, the incoming labelassociated with packet instructions to split the BIER header into aplurality of smaller headers associated with a plurality of smaller bitstrings, each smaller bit string of the plurality of smaller bit stringscorresponding to a second bit string length; generating a set of splitbit masks; performing a separate bitwise AND operation on each split bitmask of the set of split bit masks and the BIER bit string to generatethe plurality of smaller bit strings, each smaller bit string of theplurality of smaller bit strings copied to a corresponding smallerheader of the plurality of smaller headers; and performing a lookup foreach of the plurality of smaller headers on a respective forwardingtable to determine one or more egress routers to which to transmit thepacket.

According to yet another embodiment, one or more computer-readablenon-transitory storage media may embody instructions that, when executedby a processor, cause the performance of operations, includingreceiving, at a border node, a packet from an ingress router, the packetcomprising a Bit Index Explicit Replication (BIER) header having a BIERbit string, the BIER bit string corresponding to a first bit stringlength; reading an incoming label of the packet, the incoming labelassociated with packet instructions to split the BIER header into aplurality of smaller headers associated with a plurality of smaller bitstrings, each smaller bit string of the plurality of smaller bit stringscorresponding to a second bit string length; generating a set of splitbit masks; performing a separate bitwise AND operation on each split bitmask of the set of split bit masks and the BIER bit string to generatethe plurality of smaller bit strings, each smaller bit string of theplurality of smaller bit strings copied to a corresponding smallerheader of the plurality of smaller headers; and performing a lookup foreach of the plurality of smaller headers on a respective forwardingtable to determine one or more egress routers to which to transmit thepacket.

Technical advantages of certain embodiments of this disclosure mayinclude one or more of the following. The systems and methods describedherein may allow for the transmission of, from an ingress router to aborder node of a multicast network, a single copy of a multicast packethaving a BIER header with a larger bit string. At the border node, theBIER header with the larger bit string may be split into smaller headershaving smaller bit strings. As a result, as further described below, thepresent disclosure allows for the seamless stitching together of BSLdomains having varying capacities, thereby avoiding unnecessarytransmission of numerous packet copies from an ingress router tocorresponding egress routers.

Other technical advantages will be readily apparent to one skilled inthe art from the following figures, descriptions, and claims. Moreover,while specific advantages have been enumerated above, variousembodiments may include all, some, or none of the enumerated advantages.

Example Embodiments

In accordance with Bit Index Explicit Replication (BIER) technology,when a multicast data packet enters the multicast domain, an ingressrouter (also referred to as bit-forwarding ingress router (“BFIR”))determines the set of egress routers (also referred to as bit-forwardingegress routers (“BFERs”)) to which the packet is to be transmitted. (Amulticast data packet enters a BIER domain at a BFIR, and leaves theBIER domain at one or more BFERs. A BFER is generally defined as arouter that is connected to the receiver of an access network.) The BFIRencapsulates the packet in a BIER header. The BIER header contains a bitstring, wherein each bit represents one BFER in the domain. For each bitthat is set in the BIER header, the packet will be forwarded to theassociated BFER.

Conventionally, for each BFER to which a packet is to be transmitted, acorresponding bit is set in the BIER header of the packet. While thearchitecture accommodates BIER headers to be of varying bit lengths, thetechnology is not able to process varying bit string lengths from BFIRto BFER domains. Specifically, BFIRs generally comprise heavy dutydevices (e.g., data center nodes, aggregation nodes, core nodes, and thelike) having increased capability; as such, they are able to processlarge bit strings, typically on the order of 2048 bits or more. Incontrast, BFERs may comprise low-end devices (e.g., access devices,etc.) having lesser capability and may be able to process only smallerbit strings. Moreover, if the number of BFERs to which a packet is to betransmitted is on order of hundreds or thousands, it may not be possiblefor a packet to carry thousands of bits, simply because thecorresponding BFER devices lack the processing capability. As a result,to account for the reduced capability of the BFERs, the BFIR may have tosend many copies of the packet using smaller bit strings based on thebit string length supported by the BFERs.

The present disclosure is directed to a dynamic mechanism whereinvarying bit string length domains may be integrated or “stitched” (i.e.,smoothly seamed) together, allowing a BFIR to send a single copy of apacket with a BIER header that supports a larger bit string, which maythen be split at a border node into smaller headers having smaller bitstrings. Specifically, the present disclosure introduces systems andmethods wherein the border node receives a packet from a BFIR (thepacket comprising a BIER header having a larger bit string), determinesthat the incoming packet comprises a BIER header having a BIER bitstring that is to be split or fragmented into a plurality of smallerheaders having smaller bit strings, splits or fragments the BIER bitstring into a plurality of smaller bit strings using a set of split bitmasks, and copies the smaller bit strings into a plurality of smallerheaders for transmission to appropriate BFERs. In accordance with thepresent disclosure, the statelessness of BIER is maintained, andreliance is only made on the larger bit string to identify the smallerbit strings. As a result, local state entries are not required on any ofthe border nodes.

Reference is now made to FIG. 1 , wherein is depicted a system 100 forforwarding packets over varying bit string length domains using dynamicheader stitching, in accordance with the present disclosure. System 100includes an ingress router, BFIR 110, for sending multicast packets overa network 130 to plurality of egress nodes. Although one BFIR 110 isshown in FIG. 1 , it is to be understood that a multicast network mayinclude a plurality of BFIRs. A BFIR 110 may receive a multicast packet120 having an incoming label 122 and a BIER header 124. The BIER header124 may include a bit string (for clarity, referred to hereafter as a“BIER bit string” 126), wherein each bit that is set to one (1)corresponds to an egress router that is to receive a copy of themulticast packet 120, as further described below. In the example of FIG.1 , the BIER bit string 126 comprises eight bits having the followingvalues: 01000010. The second and seventh bits, as counted from right toleft, are set to one (1) and correspond to two egress routers that areto receive to receive the multicast packet 120. Although the BIER header124 is shown with a BIER bit string 126 having a “first bit stringlength” of eight, i.e., eight (8) bits, it is to be understood that theBIER header 124 may include a bit string of any length, as known andunderstood in the art. By way of example and not limitation, the BIERheader 124 may include a BIER bit string having a length of 256 bits,512 bits, 1024 bits, or 2048 bits.

The incoming label 122 of the multicast packet 120 may be associatedwith packet instructions that indicate to a border node 140 that themulticast packet 120 comprises a BIER header 124 having a BIER bitstring 126 that is to be split or fragmented. Thus, in the example ofFIG. 1 , the incoming label 122 (shown as “8888”) may instruct theborder node 140 that the BIER header 124 having a BIER bit string 126that is eight (8) bits in length is to be split into a plurality ofsmaller headers associated with a plurality of smaller bit strings, eachsmaller bit string corresponding to a “second bit string length”, i.e.,here, the second bit string length is four, i.e., four (4) bits.However, it is to be understood that the second bit string length may beany smaller length, comprising any number of bits, as indicated by theincoming label 122. It is further to be understood that the term“smaller” (as in smaller headers and/or smaller bit strings) refers tothe relative size and/or length of the smaller headers and/or smallerbit strings as compared to the original BIER header 124 and/or the BIERbit string 126

With continued to reference to FIG. 1 , the border node 140 may be anintermediate node that receives the multicast packet 120 from the BFIR110 and coordinates the transmission of the multicast packet 120 to theappropriate BFERs. The border node 140 may be connected to and may servedifferent segments of the network, and each segment may have a differentcapability. In an embodiment, the border node 140 may comprise a routerthat is operable to “stitch together” or integrate the logic of a highcapacity BFIR with lower-capacity BFERs. Specifically, the border node140 may include functionality to read the incoming label 122 of themulticast packet 120 to determine whether the BIER header of the packetis to be split or fragmented into smaller headers having smaller bitstrings before the packet is transmitted to corresponding BFERs.

FIG. 1 further shows two sets of egress routers or BFERs: a first set ofBFERs 150; and a second set of BFERs 170. The first set of BFERs 150comprises four egress routers 152, 154, 156, 158 (labeled as BFER-1, -2,-3, and-4). The second set of BFERs 170 comprises four egress routers172, 174, 176, 178 (labeled as BFER-5, -6, -7, and-8). While FIG. 1shows two sets of BFERs 150, 170, with each set having four BFERs152-158, 172-178, it is to be understood that the system may include anynumber and/or sets of BFERs. Moreover, each set of BFERs 150, 170 maycorrespond to a Set-ID. As known in the art, Set-IDs provide a means ofsupporting egress routers when the number of routers exceeds the bitlength. In the example of FIG. 1 , the first set of BFERs 150 correspondto Set-ID 0 and the second set of BFERs 170 correspond to Set-ID 1.Additionally, the first four bits (bits 1 through 4) of the BIER bitstring 126 may correspond to the four BFERs 152-158 of the first set ofBFERs 150 (corresponding to Set-ID 0), and the second four bits (bits 5through 8) of the BIER bit string 126 may correspond to the four BFERs172-178 of the second set of BFERs 170 (corresponding to Set-ID 1). Inother words, the first bit of the BIER bits string 126 may correspond tothe first BFER 152, the second bit may correspond to the second BFER154, the third bit may correspond to the third BFER 156, the fourth bitmay correspond to the fourth BFER 158, the fifth bit may correspond tothe fifth BFER 172, and so on. For each bit in the BIER bit string 126that is set to one (1), the multicast packet 120 (or more specifically,a copy of the multicast packet 120) will be sent to the correspondingBFER on the receiving end. In this example, bits 2 and 7 are set to one(1), indicating that the multicast packet is to be transmitted to thesecond BFER 154 (BFER-2) and the seventh BFER 176 (BFER-7).

With continued reference to FIG. 1 and with further reference to FIG. 2, in operation, the BFIR 110 transmits the multicast packet 120 to theborder node 140 for further processing and transmission to theappropriate BFERs. When the border node 140 receives the multicastpacket 120, the border node 140 reads the incoming label 122 of themulticast packet 120. The incoming label 122 may be associated withpacket instructions to split or fragment the BIER header into aplurality of smaller headers associated with a plurality of smaller bitstrings, each smaller bit string of the plurality of smaller bit stringscorresponding to a second bit string length. In accordance with thepresent disclosure, the incoming label 122 is said to be “associated”with packet instructions to split the BIER header into a plurality ofsmaller headers in that the packet instructions may be incorporatedwithin the incoming label 122 (e.g., the packet instructions may bedirectly embedded within incoming label 122 itself), or may beindirectly provided by the incoming label by pointing to a lookup table.With respect to the latter, in an embodiment, the incoming label mayindicate that a new lookup needs to be performed on a Bit IndexForwarding Table (BIFT) 210.

The BIFT 210 is a BIER-associated forwarding table that provides thenext-hop information for every possible BFER destination. Morespecifically, the BIFT 210 may include a plurality of fields 220,including an incoming label field 222 (corresponding to the incominglabel 122 of the multicast packet 120), a BIER bit string field 226(corresponding to the BIER bit string 126 of the multicast packet 120),and a next-hop field 228. When the incoming label 122 points to a lookupin the BIFT 210 (and the border node 140 performs the lookup), the BIFT210 may indicate in the next-hop field 228 that the corresponding BIERheader 124 is to be split into a plurality of smaller headers, eachsmaller header of the plurality of smaller headers associated with asmaller bit string. The next-hop field 228 may further indicate thelength of the smaller bit string. In the example of FIG. 2 , for amulticast packet having an incoming label of 8888 and a bit string of01000010, the next-hop field 228 of the BIFT 210 instructs the bordernode 140 to split the BIER header 124 into smaller headers, each smallerheader associated with a smaller bit string corresponding to a bitstring length of four (4), and then to perform a lookup of the smallerheaders in a second BIFT 250.

In response, the border node 140 may generate a set of “split bitmasks,” as that term is described herein. The length of each split bitmask may correspond to the first bit string length, i.e., namely thelength of the BIER bit string 126. Additionally, the number of split bitmasks to be created in the set of split bit masks may correspond to thequotient of the first bit string length (the length of the BIER bitstring 126) and the second bit string length (the length of the desiredsmaller bit string, as reflected in the BIFT 210):

$\begin{matrix}{\frac{{First}{bit}{string}{length}}{{Second}{bit}{string}{length}} = {{Number}{of}{split}{bit}{masks}}} & {{Eq}.(1)}\end{matrix}$

Reference is now made to FIG. 3 , wherein is shown a mechanism forgenerating a set of split bit masks for the purpose of splitting a BIERheader having a BIER bit string into a plurality of smaller headers,each smaller header associated with a smaller bit string. For purposesof illustration, and in accordance with the examples shown in FIGS. 1and 2 , consider Example 1 of FIG. 3 , wherein a BIER header comprisesthe BIER bit string 305 comprising the following eight (8) bits:01000010. Based on the instructions of the next-hop field 228 of theBIFT 210 (shown in FIG. 2 ), the BIER header is to be split into smallerheaders, each with a bit string length of four (4) bits. Using Eq. (1),this requires the creation of two split bit masks, (8 bits/4 bits). Thetwo split bit masks 310 a, 310 b (collectively, the set of split bitmasks 310) are shown in FIG. 3 . Each split bit mask 310 a, 310 b isassigned a consecutive numerical index 312 a, 312 b starting from zero(0). These indices will serve as the “Set-IDs”. By way of example, thefirst split bit mask 310 a is assigned an index of zero (0) (labeled inFIG. 3 as “Set-ID 0” 312 a) and the second split bit mask 310 b isassigned an index of one (1) (labeled in FIG. 3 as “Set-ID 1” 312 b).Additionally, as described above, the length of each split bit maskcorresponds to the first bit string length, which is the length of theBIER bit string 126 of the BIER header 124, i.e., here, eight (8) bits.

For each split bit mask 310 a, 310 b, a set of consecutive bits are setto one (1) and all remaining bits are set to zero (0). The length ofeach set of consecutive bits corresponds to the second bit stringlength. In other words, the number of consecutive bits set to one (1)equals the second bit string length. Here, the second bit string length,as described above, is four (4) bits. Thus, four consecutive bits willbe set to one (1), and all remaining bits will be set to zero (0).

To determine which set of consecutive bits will be set to one (1) for agiven split bit mask, the following methodology may be used. For thefirst split bit mask 310 a having a numerical index of zero (0) (e.g.,Set-ID 0 312 a), the set of consecutive bits starts at the first bitposition of the first split bit mask 310 a and goes to the bitcorresponding to the numerical value of the second bit string length,i.e., the set of consecutive bits starts at the first bit position andgoes to the fourth bit, which corresponds to the second bit stringlength (i.e., 4 bits). Thus, bits 1 through 4 (corresponding to thefirst set of consecutive bits 314 a) will be set to one (1), and allremaining bits 316 a will be set to zero (0). Then, for each successivesplit bit mask having a next consecutive numerical index, the set ofconsecutive bits starts at a “next bit position,” which corresponds to anext bit after the last or highest bit set to one (1) in the precedingsplit bit mask. Therefore, for the second split bit mask 310 b havingthe next consecutive numerical index of one (1) (e.g., Set-ID 1 312 b),the set of consecutive bits starts at the next bit position (e.g., bit5) which corresponds to the next bit after the highest bit (e.g., bit 4)set to one (1) in the preceding split bit mask (e.g., first split bitmask 310 a). In other words, for the second split bit mask, the nextfour bits, bits 5 through 8 (corresponding to the second set ofconsecutive bits 314 b) will be set to one (1) and all remaining bits316 b will be set to zero (0).

With further reference to FIG. 3 , to further illustrate the creation ofsplit bit masks in conjunction with a BIER header comprising a BIER bitstring having a longer bit length, consider Example 2, showing a BIERbit string 315 comprising the following 16 bits: 1011001010001010.Suppose the next-hop field of the BIFT instructs the border node tosplit the BIER header into smaller headers, each smaller headerassociated with a smaller bit string corresponding to a bit stringlength of four (4) bits. In this scenario, four split bit masks 320 a,320 b, 320 c, 320 d (collectively, the set of split bit masks 320) maybe generated, as the quotient of the first bit string length (i.e., 16bits) and the second bit string length (i.e., 4 bits) is four. Next,each split bit mask 320 a-d of the set of split bit masks 320 isassigned a consecutive numerical index 322 a-322 d starting from zero(0). By way of example, the first split bit mask 320 a is assigned anindex of zero (0) (labeled as “Set-ID 0” 322 a), the second split bitmask 320 b is assigned an index of one (1) (labeled as “Set-ID 1” 322b), the third split bit mask 320 c is assigned an index of two (2)(labeled as “Set-ID 2” 322 c), and the fourth split bit mask 320 d isassigned an index of three (3) (labeled as “Set-ID 3” 322 d). For eachsplit bit mask 320 a-d, a set of consecutive bits—the length of each setof consecutive bits corresponding to the second bit string length—areset to one (1) and all remaining bits are set to zero (0). Here, thesecond bit string length is 4 bits. Thus, in each split bit mask 320a-d, four consecutive bits will be set to one (1), and all remainingbits will be set to zero (0). For the first split bit mask 320 a havinga numerical index of zero (0) (e.g., Set-ID 0 322 a), the set ofconsecutive bits starts at a first bit position of the first split bitmask 320 a and goes to the fourth bit, which corresponds to the secondbit string length. Thus, bits 1 through 4 (corresponding to the firstset of consecutive bits 324 a) will be set to one (1), and all remainingbits will be set to zero (0). In other words, in the first split bitmask 320 a, the first four bits are set to one (1), and the remainingbits are set to zero (0). Then, for each successive split bit mask 320b-d having a next consecutive numerical index 322 b-d, the set ofconsecutive bits starts at a next bit position corresponding to the nextbit after the last or highest bit set to one (1) in the preceding splitbit mask. In the second split bit mask 320 b having a next consecutivenumerical index of one (1), the set of consecutive bits starts at thenext bit position (e.g., bit 5) which corresponds to the next bit afterthe highest bit (e.g., bit 4) set to one (1) in the preceding split bitmask. Thus, the next set of four bits (corresponding a second set ofconsecutive bits 324 b, i.e., bits 5-8) are set to one (1), and theremaining bits are set to zero. In the third split bit mask 320 c havinga next consecutive numerical index of two (2), the set of consecutivebits starts at the next bit position (e.g., bit 9) which corresponds tothe next bit after the highest bit (e.g., bit 8) set to one (1) in thepreceding split bit mask. Thus, the next set of four bits (correspondinga third set of consecutive bits 324 c, i.e., bits 9-12) are set to one(1), and the remaining bits are set to zero. The same methodology isapplied to generate the fourth split bit mask 320 d. Specifically, inthe fourth split bit mask 320 d having a next consecutive numericalindex of three (3), the set of consecutive bits starts at the next bitposition (e.g., bit 13) which corresponds to the next bit after thehighest bit (e.g., bit 12) set to one (1) in the preceding split bitmask; in other words, the last set of four bits (corresponding to afourth set of consecutive bits 324 d, i.e., bits 13-16) are set to one(1) and the remaining bits are set to zero. In this manner, split bitmasks may be generated for any BIER header having a BIER bit string ofany length.

Returning to the split bit masks of Example 1 in FIG. 3 , once the splitbit masks have been generated, a bitwise AND operation is separatelyperformed on each split bit mask and the BIER bit string. Thus, when anAND operation 330 is performed between the BIER bit string 305(01000010) and the first split bit mask 310 a (00001111), the result isa smaller bit string 350, namely 0010. Since the numerical index of thefirst split bit mask 310 is zero (e.g., Set-ID 0 312 a), the resultingsmaller bit string 350 is labeled “0:0010”. Likewise, when an ANDoperation 340 is performed between the BIER bit string 305 (01000010)and the second split bit mask 310 b (11110000), the result is a smallerbit string 360, namely 0100. Since the numerical index of the secondsplit bit mask 310 b is one (e.g., Set-ID 1 312 b), the resultingsmaller bit string 360 is labeled “1:0100”. The resulting set of smallerbit strings 350, 360 may be copied to corresponding smaller headers. Thesmaller headers may correspond to new incoming labels, as determinedand/or correlated by the border node 140.

With further reference to FIG. 2 , a lookup may then be performed in asecond BIFT 250 of the set of smaller headers having smaller bit strings350, 360. Specifically, the second BIFT 250 may list all of thepotential combinations of the smaller bit strings for an 8-bit bitstring that that has been split into 4-bit bit strings. The second BIFT250 may further correlate each smaller bit string to the appropriateBFER to which a multicast packet may be transmitted. In the Example ofFIGS. 1 and 2 , the second BIFT 250 indicates that the “next hops”(shown in the second next-hop field 280 of the second BIFT 250) forheaders having bit strings 0:0010 and 1:0100 are nodes N2 and N7,corresponding to BFERs 154 and 176. The second BIFT 250 also indicatesthe outgoing label 290, which corresponds to a local value advertised bythe next hop (BFER) destination. Based on the next hop instructions ofthe second BIFT 250, the border node may then replicate the multicastpacket 120 and associate a replicated copy of the multicast packet 120with the appropriate smaller headers with corresponding smaller bitstrings (e.g., 0:0010 and 1:0100), so that the multicast packet 120 maybe sent to the appropriate BFERs. The multicast packet 120 (the termincluding and encompassing its replicated copies) may then betransmitted to the corresponding BFERs. In this manner, BIER headerscomprising larger BIER bit strings may be split or fragmented intosmaller headers having smaller bit strings, thereby allowing for thestitching or integration of BSL domains having varying bit string lengthcapabilities.

Reference is now made to FIG. 4 , wherein method 400 depicts a flowdiagram of a method for forwarding BIER packets over varying BSL domainsusing dynamic header stitching, in accordance with certain embodiments.The steps of method 400 may be in accordance with the systems, methods,and operations outlined in conjunction with FIGS. 1-3 . As such, similarand corresponding terms described in conjunction with FIGS. 1-3 may havethe same meaning when used in conjunction with method 400 of FIG. 4 .Additionally, the present disclosure incorporates by reference FIGS. 1-3and their corresponding descriptions for the purposes of explaining,expounding upon, or otherwise clarifying the steps of method 400.

Method 400 may be performed in a multicast environment having at leastone ingress router (i.e., BFIR) and one or more sets of egress routers(i.e., BFERs). Each set of BFERs may comprise any number of egressrouters, as known in the art. Additionally, each set of BFERs maycorrespond to a Set-ID.

In accordance with method 400, it is to be understood that a multicastpacket is received at a BFIR. The multicast packet may include anincoming label and a BIER header. The BIER header may include a bitstring (referred to herein as a “BIER bit string”), wherein each bitthat is set to one (1) corresponds to a BFER that is to receive a copyof the multicast packet. For purposes the present disclosure, the BIERbit string of the incoming multicast packet comprises a “first bitstring length”. The first bit string length may be any length, as knownand understood in the art.

The incoming label of the multicast packet may be associated with packetinstructions that indicate to a border node that the multicast packetcomprises a BIER header having a BIER bit string that needs to be splitor fragmented into smaller headers with smaller bit strings having a“second bit string length”. It is to be understood that the second bitstring length may be any length of bits.

Method 400 may be performed at border node located between a BFIR and aset of BFERs in a multicast network. In an embodiment, the border nodemay comprise a router that may be connected to and may serve differentsegments of the network, and is operable to integrate the logic of ahigh capacity BFIR with lower-capacity BFERs. Specifically, the bordernode may include functionality to read the incoming label of themulticast packet to determine whether the BIER header of the packet isto be split or fragmented into smaller headers having smaller bitstrings before the packet is transmitted to corresponding BFERs.Although the present disclosure describes the performance of method 400in conjunction with a border node, it is to be understood that method400 may be performed by any component, element, or module associatedwith multicast environment without departing from the spirit or scope ofthe present disclosure.

The method may begin at step 410. At step 420, a border node may receivea multicast packet from an ingress router (e.g., a BFIR), the multicastpacket comprising a BIER header having a BIER bit string, the BIER bitstring corresponding to a first bit string length, as described above.

At step 430, the border node may read an incoming label of the multicastpacket. The incoming label may be associated with packet instructions tosplit or fragment the BIER header into a plurality of smaller headers,each smaller header of the plurality of smaller headers associated witha smaller bit string, and each smaller bit string corresponding to asecond bit string length. In accordance with the present disclosure, theincoming label is said to be “associated” with packet instructions tosplit the BIER header into a plurality of smaller headers in that thepacket instructions may be incorporated within the incoming label (e.g.,the packet instructions may be directly embedded within incoming labelitself), or may be indirectly provided by the incoming label by pointingto a lookup table. With respect to the latter, in an embodiment, theincoming label may indicate that a new lookup needs to be performed on aBit Index Forwarding Table (BIFT). The BIFT may provide the next-hopinformation for every possible BFER destination and may include aplurality of fields, including an incoming label field (corresponding tothe incoming label of the packet), a BIER bit string field(corresponding to the BIER bit string of the packet), and a next-hopfield. When the border node performs a lookup for the incoming label,the BIFT may indicate in the next-hop field (or otherwise) that thecorresponding BIER header is to be split into a plurality of smallerheaders, each smaller header of the plurality of smaller headersassociated with a smaller bit string. The BIFT may further indicate thelength of the smaller bit string.

At step 440, a determination may be made as to whether the incominglabel is associated with packet instructions to split the BIER headerinto a plurality of smaller headers. If, at step 440, it is determinedthat the incoming label is not associated with packet instructions tosplit the BIER headers into a plurality of smaller headers, the methodmay end at step 480. If, however, at step 440, it is determined that theincoming label is associated with packet instructions to split the BIERheaders into a plurality of smaller headers, the method may proceed tostep 450.

At step 450, the border node may generate a set of split bit masks. Thenumber of split bit masks in the set may correspond to a quotient of thefirst bit string length (i.e., the length of the BIER bit string) andthe second bit string length (the desired length of the smaller bitstrings). The length of each split bit mask of the set of split bitmasks may correspond to the first bit string length. The mechanism ofgenerating the set of split bit masks may be in accordance with thedescription provided in conjunction with FIG. 3 . Specifically, eachsplit bit mask of the set of split bit masks may be assigned aconsecutive numerical index starting from zero (0). These indices willserve as the “Set-IDs”. For each split bit mask, a set of consecutivebits—the length of each set of consecutive bits corresponding to thesecond bit string length— are set to one (1) and all remaining bits areset to zero (0). Specifically, for the first split bit mask of the setof split bit masks (having a numerical index of zero), the set ofconsecutive bits starts at a first bit position of the first split bitmask and goes to the bit corresponding in numerical value to the secondbit string length. Then, for each successive split bit mask of the setof split bit masks having a next consecutive numerical index, the set ofconsecutive bits starts at a next bit position, wherein the next bitposition corresponds to a next bit after a last or highest bit set toone (1) in the preceding split bit mask. Again, all remaining bits areset to zero (0). In this manner, split bit masks may be generated forany BIER header having a BIER bit string of any length.

At step 460, a separate bitwise AND operation may be performed on eachsplit bit mask of the set of split bit masks and the BIER bit string tothereby generate a plurality of smaller bit strings, each smaller bitstring of the plurality of smaller bit strings copied to a correspondingsmaller header of the plurality of smaller headers. The smaller headersmay also correspond to new incoming labels, as determined and/orcorrelated by the border node.

At step 470, a lookup may be performed in a second respective forwardingtable, i.e., second BIFT, for each of the plurality of smaller headershaving a smaller bit string to determine one or more egress routers towhich to transmit the packet. Specifically, the second BIFT may list allof the potential combinations of the smaller bit strings. The secondBIFT may further correlate each smaller bit string to the appropriateBFERs to which the multicast packet is to be transmitted. Based on theinstructions in the second forwarding table, the border node may thenreplicate the multicast packet, associating a copy of the multicastpacket with the appropriate smaller headers with corresponding smallerbit strings, so that the multicast packet may be sent to the appropriateBFERs. The multicast packet (the term including its replicated copies)may then be transmitted to the corresponding BFERs. In this manner, BIERheaders comprising larger BIER bit strings may be split or fragmentedinto smaller headers having smaller bit strings, thereby allowing forthe stitching or integration of BSL domains having varying bit stringlength capabilities.

In sum, the systems and methods of the present disclosure may allow foran ingress router to transmit a single copy of a multicast packet havinga BIER header with a larger bit string. At the border node, the BIERheader with the larger bit string may be split into smaller headershaving smaller bit strings for transmission to the appropriate egressrouters. As a result, the present disclosure allows for the seamlessstitching together of BSL domains having varying capacities, therebyavoiding unnecessary transmission of numerous packet copies from aningress router to corresponding egress routers.

Reference is now made to FIG. 5 , wherein is shown an example computersystem 500. In particular embodiments, one or more computer systems 500perform one or more steps of one or more methods described orillustrated herein. In particular embodiments, one or more computersystems 500 provide functionality described or illustrated herein. Inparticular embodiments, software running on one or more computer systems500 performs one or more steps of one or more methods described orillustrated herein or provides functionality described or illustratedherein. Particular embodiments include one or more portions of one ormore computer systems 500. Herein, reference to a computer system mayencompass a computing device, and vice versa, where appropriate.Moreover, reference to a computer system may encompass one or morecomputer systems, where appropriate.

This disclosure contemplates any suitable number of computer systems500. This disclosure contemplates computer system 500 taking anysuitable physical form. As example and not by way of limitation,computer system 500 may be an embedded computer system, a system-on-chip(SOC), a single-board computer system (SBC) (such as, for example, acomputer-on-module (COM) or system-on-module (SOM)), a desktop computersystem, a laptop or notebook computer system, an interactive kiosk, amainframe, a mesh of computer systems, a mobile telephone, a personaldigital assistant (PDA), a server, a tablet computer system, anaugmented/virtual reality device, or a combination of two or more ofthese. Where appropriate, computer system 500 may include one or morecomputer systems 500; be unitary or distributed; span multiplelocations; span multiple machines; span multiple data centers; or residein a cloud, which may include one or more cloud components in one ormore networks. Where appropriate, one or more computer systems 500 mayperform without substantial spatial or temporal limitation one or moresteps of one or more methods described or illustrated herein. As anexample and not by way of limitation, one or more computer systems 500may perform in real time or in batch mode one or more steps of one ormore methods described or illustrated herein. One or more computersystems 500 may perform at different times or at different locations oneor more steps of one or more methods described or illustrated herein,where appropriate.

In particular embodiments, computer system 500 includes a processor 502,memory 504, storage 506, an input/output (I/O) interface 508, acommunication interface 510, and a bus 512. Although this disclosuredescribes and illustrates a particular computer system having aparticular number of particular components in a particular arrangement,this disclosure contemplates any suitable computer system having anysuitable number of any suitable components in any suitable arrangement.

In particular embodiments, processor 502 includes hardware for executinginstructions, such as those making up a computer program. As an exampleand not by way of limitation, to execute instructions, processor 502 mayretrieve (or fetch) the instructions from an internal register, aninternal cache, memory 504, or storage 506; decode and execute them; andthen write one or more results to an internal register, an internalcache, memory 504, or storage 506. In particular embodiments, processor502 may include one or more internal caches for data, instructions, oraddresses. This disclosure contemplates processor 502 including anysuitable number of any suitable internal caches, where appropriate. Asan example and not by way of limitation, processor 502 may include oneor more instruction caches, one or more data caches, and one or moretranslation lookaside buffers (TLBs). Instructions in the instructioncaches may be copies of instructions in memory 504 or storage 506, andthe instruction caches may speed up retrieval of those instructions byprocessor 502. Data in the data caches may be copies of data in memory504 or storage 506 for instructions executing at processor 502 tooperate on; the results of previous instructions executed at processor502 for access by subsequent instructions executing at processor 502 orfor writing to memory 504 or storage 506; or other suitable data. Thedata caches may speed up read or write operations by processor 502. TheTLBs may speed up virtual-address translation for processor 502. Inparticular embodiments, processor 502 may include one or more internalregisters for data, instructions, or addresses. This disclosurecontemplates processor 502 including any suitable number of any suitableinternal registers, where appropriate. Where appropriate, processor 502may include one or more arithmetic logic units (ALUs); be a multi-coreprocessor; or include one or more processors 502. Although thisdisclosure describes and illustrates a particular processor, thisdisclosure contemplates any suitable processor.

In particular embodiments, memory 504 includes main memory for storinginstructions for processor 502 to execute or data for processor 502 tooperate on. As an example and not by way of limitation, computer system500 may load instructions from storage 506 or another source (such as,for example, another computer system 500) to memory 504. Processor 502may then load the instructions from memory 504 to an internal registeror internal cache. To execute the instructions, processor 502 mayretrieve the instructions from the internal register or internal cacheand decode them. During or after execution of the instructions,processor 502 may write one or more results (which may be intermediateor final results) to the internal register or internal cache. Processor502 may then write one or more of those results to memory 504. Inparticular embodiments, processor 502 executes only instructions in oneor more internal registers or internal caches or in memory 504 (asopposed to storage 506 or elsewhere) and operates only on data in one ormore internal registers or internal caches or in memory 504 (as opposedto storage 506 or elsewhere). One or more memory buses (which may eachinclude an address bus and a data bus) may couple processor 502 tomemory 504. Bus 512 may include one or more memory buses, as describedbelow. In particular embodiments, one or more memory management units(MMUs) reside between processor 502 and memory 504 and facilitateaccesses to memory 504 requested by processor 502. In particularembodiments, memory 504 includes random access memory (RAM). This RAMmay be volatile memory, where appropriate. Where appropriate, this RAMmay be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, whereappropriate, this RAM may be single-ported or multi-ported RAM. Thisdisclosure contemplates any suitable RAM. Memory 504 may include one ormore memories 504, where appropriate. Although this disclosure describesand illustrates particular memory, this disclosure contemplates anysuitable memory.

In particular embodiments, storage 506 includes mass storage for data orinstructions. As an example and not by way of limitation, storage 506may include a hard disk drive (HDD), a floppy disk drive, flash memory,an optical disc, a magneto-optical disc, magnetic tape, or a UniversalSerial Bus (USB) drive or a combination of two or more of these. Storage506 may include removable or non-removable (or fixed) media, whereappropriate. Storage 506 may be internal or external to computer system500, where appropriate. In particular embodiments, storage 506 isnon-volatile, solid-state memory. In particular embodiments, storage 506includes read-only memory (ROM). Where appropriate, this ROM may bemask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM),electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM),or flash memory or a combination of two or more of these. Thisdisclosure contemplates mass storage 506 taking any suitable physicalform. Storage 506 may include one or more storage control unitsfacilitating communication between processor 502 and storage 506, whereappropriate. Where appropriate, storage 506 may include one or morestorages 506. Although this disclosure describes and illustratesparticular storage, this disclosure contemplates any suitable storage.

In particular embodiments, I/O interface 508 includes hardware,software, or both, providing one or more interfaces for communicationbetween computer system 500 and one or more I/O devices. Computer system500 may include one or more of these I/O devices, where appropriate. Oneor more of these I/O devices may enable communication between a personand computer system 500. As an example and not by way of limitation, anI/O device may include a keyboard, keypad, microphone, monitor, mouse,printer, scanner, speaker, still camera, stylus, tablet, touch screen,trackball, video camera, another suitable I/O device or a combination oftwo or more of these. An I/O device may include one or more sensors.This disclosure contemplates any suitable I/O devices and any suitableI/O interfaces 508 for them. Where appropriate, I/O interface 508 mayinclude one or more device or software drivers enabling processor 502 todrive one or more of these I/O devices. I/O interface 508 may includeone or more I/O interfaces 508, where appropriate. Although thisdisclosure describes and illustrates a particular I/O interface, thisdisclosure contemplates any suitable I/O interface.

In particular embodiments, communication interface 510 includeshardware, software, or both providing one or more interfaces forcommunication (such as, for example, packet-based communication) betweencomputer system 500 and one or more other computer systems 500 or one ormore networks. As an example and not by way of limitation, communicationinterface 510 may include a network interface controller (NIC) ornetwork adapter for communicating with an Ethernet or other wire-basednetwork or a wireless NIC (WNIC) or wireless adapter for communicatingwith a wireless network, such as a WI-FI network. This disclosurecontemplates any suitable network and any suitable communicationinterface 510 for it. As an example and not by way of limitation,computer system 500 may communicate with an ad hoc network, a personalarea network (PAN), a local area network (LAN), a wide area network(WAN), a metropolitan area network (MAN), or one or more portions of theInternet or a combination of two or more of these. One or more portionsof one or more of these networks may be wired or wireless. As anexample, computer system 500 may communicate with a wireless PAN (WPAN)(such as, for example, a BLUETOOTH WPAN), a WI-FI network, a WI-MAXnetwork, a cellular telephone network (such as, for example, a GlobalSystem for Mobile Communications (GSM) network, a Long-Term Evolution(LTE) network, or a 5G network), or other suitable wireless network or acombination of two or more of these. Computer system 500 may include anysuitable communication interface 510 for any of these networks, whereappropriate. Communication interface 510 may include one or morecommunication interfaces 510, where appropriate. Although thisdisclosure describes and illustrates a particular communicationinterface, this disclosure contemplates any suitable communicationinterface.

In particular embodiments, bus 512 includes hardware, software, or bothcoupling components of computer system 500 to each other. As an exampleand not by way of limitation, bus 512 may include an AcceleratedGraphics Port (AGP) or other graphics bus, an Enhanced Industry StandardArchitecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT)interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBANDinterconnect, a low-pin-count (LPC) bus, a memory bus, a Micro ChannelArchitecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, aPCI-Express (PCIe) bus, a serial advanced technology attachment (SATA)bus, a Video Electronics Standards Association local (VLB) bus, oranother suitable bus or a combination of two or more of these. Bus 512may include one or more buses 512, where appropriate. Although thisdisclosure describes and illustrates a particular bus, this disclosurecontemplates any suitable bus or interconnect.

Herein, a computer-readable non-transitory storage medium or media mayinclude one or more semiconductor-based or other integrated circuits(ICs) (such, as for example, field-programmable gate arrays (FPGAs) orapplication-specific ICs (ASICs)), hard disk drives (HDDs), hybrid harddrives (HHDs), optical discs, optical disc drives (ODDs),magneto-optical discs, magneto-optical drives, floppy diskettes, floppydisk drives (FDDs), magnetic tapes, solid-state drives (SSDs),RAM-drives, SECURE DIGITAL cards or drives, any other suitablecomputer-readable non-transitory storage media, or any suitablecombination of two or more of these, where appropriate. Acomputer-readable non-transitory storage medium may be volatile,non-volatile, or a combination of volatile and non-volatile, whereappropriate.

Herein, “or” is inclusive and not exclusive, unless expressly indicatedotherwise or indicated otherwise by context. Therefore, herein, “A or B”means “A, B, or both,” unless expressly indicated otherwise or indicatedotherwise by context. Moreover, “and” is both joint and several, unlessexpressly indicated otherwise or indicated otherwise by context.Therefore, herein, “A and B” means “A and B, jointly or severally,”unless expressly indicated otherwise or indicated otherwise by context.

The scope of this disclosure encompasses all changes, substitutions,variations, alterations, and modifications to the example embodimentsdescribed or illustrated herein that a person having ordinary skill inthe art would comprehend. The scope of this disclosure is not limited tothe example embodiments described or illustrated herein. Moreover,although this disclosure describes and illustrates respectiveembodiments herein as including particular components, elements,feature, functions, operations, or steps, any of these embodiments mayinclude any combination or permutation of any of the components,elements, features, functions, operations, or steps described orillustrated anywhere herein that a person having ordinary skill in theart would comprehend. Furthermore, reference in the appended claims toan apparatus or system or a component of an apparatus or system beingadapted to, arranged to, capable of, configured to, enabled to, operableto, or operative to perform a particular function encompasses thatapparatus, system, component, whether or not it or that particularfunction is activated, turned on, or unlocked, as long as thatapparatus, system, or component is so adapted, arranged, capable,configured, enabled, operable, or operative. Additionally, although thisdisclosure describes or illustrates particular embodiments as providingparticular advantages, particular embodiments may provide none, some, orall of these advantages.

The embodiments disclosed herein are only examples, and the scope ofthis disclosure is not limited to them. Particular embodiments mayinclude all, some, or none of the components, elements, features,functions, operations, or steps of the embodiments disclosed herein.Embodiments according to the disclosure are in particular disclosed inthe attached claims directed to a method, a storage medium, a system anda computer program product, wherein any feature mentioned in one claimcategory, e.g. method, can be claimed in another claim category, e.g.system, as well. The dependencies or references back in the attachedclaims are chosen for formal reasons only. However, any subject matterresulting from a deliberate reference back to any previous claims (inparticular multiple dependencies) can be claimed as well, so that anycombination of claims and the features thereof are disclosed and can beclaimed regardless of the dependencies chosen in the attached claims.The subject-matter which can be claimed comprises not only thecombinations of features as set out in the attached claims but also anyother combination of features in the claims, wherein each featurementioned in the claims can be combined with any other feature orcombination of other features in the claims. Furthermore, any of theembodiments and features described or depicted herein can be claimed ina separate claim and/or in any combination with any embodiment orfeature described or depicted herein or with any of the features of theattached claims.

What is claimed is:
 1. A system, comprising: one or more processors; andone or more computer-readable non-transitory storage media comprisinginstructions that, when executed by the one or more processors, causeone or more components of the system to perform operations comprising:receiving, at a border node, a packet from an ingress router, the packetcomprising a Bit Index Explicit Replication (BIER) header having a BIERbit string, the BIER bit string corresponding to a first bit stringlength; reading an incoming label of the packet, the incoming labelassociated with packet instructions to split the BIER header into aplurality of smaller headers associated with a plurality of smaller bitstrings, each smaller bit string of the plurality of smaller bit stringscorresponding to a second bit string length; generating a set of splitbit masks, wherein the operation of generating the set of split bitmasks comprises: assigning each split bit mask of the set of split bitmasks a consecutive numerical index starting from zero; and for eachsplit bit mask: setting a set of consecutive bits to one (1), the set ofconsecutive bits having a bit length corresponding to the second bitstring length; and setting all remaining bits to zero (0); performing aseparate bitwise AND operation on each split bit mask of the set ofsplit bit masks and the BIER bit string to generate the plurality ofsmaller bit strings, each smaller bit string of the plurality of smallerbit strings copied to a corresponding smaller header of the plurality ofsmaller headers; and performing a lookup for each of the plurality ofsmaller headers on a respective forwarding table to determine one ormore egress routers to which to transmit the packet.
 2. The system ofclaim 1, wherein a length of each split bit mask of the set of split bitmasks corresponds to the first bit string length.
 3. The system of claim1, wherein a number of the set of split bit masks corresponds to aquotient of the first bit string length and the second bit stringlength.
 4. The system of claim 1, wherein, for a first split bit mask ofthe set of split bit masks having a numerical index of zero, the set ofconsecutive bits starts at a first bit position of the first split bitmask.
 5. The system of claim 4, wherein, for each successive split bitmask of the set of split bit masks having a next consecutive numericalindex, the set of consecutive bits starts at a next bit position, thenext bit position corresponding to a next bit after a highest bit set toone (1) in a preceding split bit mask.
 6. The system of claim 1, furthercomprising an operation of transmitting the packet to the determined oneor more egress routers.
 7. A method, comprising: receiving, at a bordernode, a packet from an ingress router, the packet comprising a Bit IndexExplicit Replication (BIER) header having a BIER bit string, the BIERbit string corresponding to a first bit string length; reading anincoming label of the packet, the incoming label associated with packetinstructions to split the BIER header into a plurality of smallerheaders associated with a plurality of smaller bit strings, each smallerbit string of the plurality of smaller bit strings corresponding to asecond bit string length; generating a set of split bit masks, whereingenerating the set of split bit masks comprises: assigning each splitbit mask of the set of split bit masks a consecutive numerical indexstarting from zero; and for each split bit mask: setting a set ofconsecutive bits to one (1), the set of consecutive bits having a bitlength corresponding to the second bit string length; and setting allremaining bits to zero (0); performing a separate bitwise AND operationon each split bit mask of the set of split bit masks and the BIER bitstring to generate the plurality of smaller bit strings, each smallerbit string of the plurality of smaller bit strings copied to acorresponding smaller header of the plurality of smaller headers; andperforming a lookup for each of the plurality of smaller headers on arespective forwarding table to determine one or more egress routers towhich to transmit the packet.
 8. The method of claim 7, wherein a lengthof each split bit mask of the set of split bit masks corresponds to thefirst bit string length.
 9. The method of claim 7, wherein a number ofthe set of split bit masks corresponds to a quotient of the first bitstring length and the second bit string length.
 10. The method of claim7, wherein, for a first split bit mask of the set of split bit maskshaving a numerical index of zero, the set of consecutive bits starts ata first bit position of the first split bit mask.
 11. The method ofclaim 10, wherein, for each successive split bit mask of the set ofsplit bit masks having a next consecutive numerical index, the set ofconsecutive bits starts at a next bit position, the next bit positioncorresponding to a next bit after a highest bit set to one (1) in apreceding split bit mask.
 12. The method of claim 7, further comprisingtransmitting the packet to the determined one or more egress routers.13. One or more computer-readable non-transitory storage media embodyinginstructions that, when executed by a processor, cause the performanceof operations comprising: receiving, at a border node, a packet from aningress router, the packet comprising a Bit Index Explicit Replication(BIER) header having a BIER bit string, the BIER bit stringcorresponding to a first bit string length; reading an incoming label ofthe packet, the incoming label associated with packet instructions tosplit the BIER header into a plurality of smaller headers associatedwith a plurality of smaller bit strings, each smaller bit string of theplurality of smaller bits strings corresponding to a second bit stringlength; generating a set of split bit masks, wherein the operation ofgenerating the set of split bit masks comprises: assigning each splitbit mask of the set of split bit masks a consecutive numerical indexstarting from zero; and for each split bit mask: setting a set ofconsecutive bits to one (1), the set of consecutive bits having a bitlength corresponding to the second bit string length; and setting allremaining bits to zero (0); performing a separate bitwise AND operationon each split bit mask of the set of split bit masks and the BIER bitstring to generate the plurality of smaller bit strings, each smallerbit string of the plurality of smaller bit strings copied to acorresponding smaller header of the plurality of smaller headers; andperforming a lookup for each of the plurality of smaller headers on arespective forwarding table to determine one or more egress routers towhich to transmit the packet.
 14. The one or more computer-readablenon-transitory storage media of claim 13, wherein a length of each splitbit mask of the set of split bit masks corresponds to the first bitstring length.
 15. The one or more computer-readable non-transitorystorage media of claim 13, wherein a number of the set of split bitmasks corresponds to a quotient of the first bit string length and thesecond bit string length.
 16. The one or more computer-readablenon-transitory storage media of claim 13, wherein, for a first split bitmask of the set of split bit masks having a numerical index of zero, theset of consecutive bits starts at a first bit position of the firstsplit bit mask.
 17. The one or more computer-readable non-transitorystorage media of claim 16, wherein, for each successive split bit maskof the set of split bit masks having a next consecutive numerical index,the set of consecutive bits starts at a next bit position, the next bitposition corresponding to a next bit after a highest bit set to one (1)in a preceding split bit mask.
 18. The one or more computer-readablenon-transitory storage media of claim 13, further comprising anoperation of transmitting the packet to the determined one or moreegress routers.